package exec

import (
	"net/http"
	"operator/config"
	logs "operator/utils/logs"

	"github.com/gin-gonic/gin"
	"github.com/gorilla/websocket"
)

// 如何对集群中的namespace进行管理
//  1. 首先要知道对哪个集群中的namespace进行管理
//  2. kubeconfig连接，集群信息存在了secret，通过clusterID --> data --> kubeconfig --> clientset
//     kubeconfig 存储在一个变量当中，map[string]string， 为什么不保存成 map[string]ClientSet，因为客户端工具有三种，不规定死
//  3. 创建一个clientset
//  4. 操作namespace
//
// {clusterId:xxx, name:xxx, namespace:xxx}
// 定义upgrader用于升级http请求
var upgrader = websocket.Upgrader{
	ReadBufferSize:  1024,
	WriteBufferSize: 1024,
	CheckOrigin:     func(r *http.Request) bool { return true },
}

func CreateWS(r *gin.Context) (ws *websocket.Conn) {
	returnData := config.ReturnData{}
	ws, err := upgrader.Upgrade(r.Writer, r.Request, nil)
	if err != nil {
		// 说明ws升级失败
		logs.Error(map[string]interface{}{"msg": err.Error()}, "升级WebSocket失败")
		returnData.Message = err.Error()
		returnData.Status = 400
		r.JSON(http.StatusOK, returnData)
		return
	}
	return
}
